package com.mp.db.jpa.modelo;

import java.io.Serializable;
import java.text.SimpleDateFormat;
import java.util.Date;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
import javax.persistence.Transient;


@Entity
@NamedQueries({
@NamedQuery(name="HistoricoPreco.findAllById", query="SELECT hisPreco FROM HistoricoPreco hisPreco WHERE hisPreco.idHistoricoPreco = :id"),
@NamedQuery(name="HistoricoPreco.findAllByUser", query="SELECT hisPreco FROM HistoricoPreco hisPreco WHERE hisPreco.nomeclaturaLocal.usuario.idUsuario = :id"),

@NamedQuery(name="HistoricoPreco.findAllByGeoItem", query="SELECT hisPreco FROM HistoricoPreco hisPreco WHERE hisPreco.nomeclaturaLocal.geoLocalizacao.descLatitude = :lat and hisPreco.nomeclaturaLocal.geoLocalizacao.descLongitude = :lon and hisPreco.item.idItem = :idItem"),
@NamedQuery(name="HistoricoPreco.findAllByItemUsr", query="SELECT hisPreco FROM HistoricoPreco hisPreco WHERE hisPreco.item.idItem = :idItem and hisPreco.nomeclaturaLocal.usuario.idUsuario = :idUsuario"),

@NamedQuery(name="HistoricoPreco.findAllByNomeclaturaLocal", query="SELECT hisPreco FROM HistoricoPreco hisPreco WHERE hisPreco.nomeclaturaLocal.idNomeclaturaLocal = :id"),
@NamedQuery(name="HistoricoPreco.findAllByNomeclaturaLocalAndItem", query="SELECT hisPreco FROM HistoricoPreco hisPreco WHERE hisPreco.item.idItem = :idItem and hisPreco.nomeclaturaLocal.idNomeclaturaLocal = :idNomeclaturaLocal"),
@NamedQuery(name="HistoricoPreco.findAllByItem", query="SELECT hisPreco FROM HistoricoPreco hisPreco WHERE hisPreco.item.idItem = :id")
})



public class HistoricoPreco implements Serializable
{

              
    @Id @GeneratedValue(strategy=GenerationType.IDENTITY)
    private int idHistoricoPreco;
    
    @Column
    private String descHistoricoPreco;
    
    @Column
    private Double valor;
    
    @Column
    @Temporal(TemporalType.TIMESTAMP)
    private java.util.Date dataCompra = new Date();
    
    @Transient
    private String dataCompraFormatada = "99/99/9999 00:00:00";

    @Column
    private int quantidade;
    
    @ManyToOne(fetch= FetchType.EAGER)
    @JoinColumn(name="iditem")
    private Item item;
    
    @ManyToOne(fetch= FetchType.EAGER)
    @JoinColumn(name="idnomeclatura")
    private NomeclaturaLocal nomeclaturaLocal;

   
    
    
    
    
    
    
    
    
    
    
    
    
    public int getIdHistoricoPreco() {
        return idHistoricoPreco;
    }

    /**
     * @param idHistoricoPreco the idHistoricoPreco to set
     */
    public void setIdHistoricoPreco(int idHistoricoPreco) {
        this.idHistoricoPreco = idHistoricoPreco;
    }

    /**
     * @return the descHistoricoPreco
     */
    public String getDescHistoricoPreco() {
        return descHistoricoPreco;
    }

    /**
     * @param descHistoricoPreco the descHistoricoPreco to set
     */
    public void setDescHistoricoPreco(String descHistoricoPreco) {
        this.descHistoricoPreco = descHistoricoPreco;
    }

    /**
     * @return the item
     */
    public Item getItem() {
        return item;
    }

    /**
     * @param item the item to set
     */
    public void setItem(Item item) {
        this.item = item;
    }


    /**
     * @return the valor
     */
    public Double getValor() {
        return valor;
    }

    /**
     * @param valor the valor to set
     */
    public void setValor(Double valor) {
        this.valor = valor;
    }

     public void setDataCompraFormatada(String dataCompraFormatada) {
        this.dataCompraFormatada = dataCompraFormatada;
    }
        
    public String getDataCompraFormatada() 
    {
        SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy HH:mm:ss");
        return sdf.format(new java.sql.Date(this.dataCompra.getTime()));
    }
    
    public Date getDataCompra() 
    {
        return this.dataCompra;
    }
    
    public void setDataCompra(Date dataCompra) {
        this.dataCompra = dataCompra;
    }

    /**
     * @return the quantidade
     */
    public int getQuantidade() {
        return quantidade;
    }

    /**
     * @param quantidade the quantidade to set
     */
    public void setQuantidade(int quantidade) {
        this.quantidade = quantidade;
    }
    
    
     public NomeclaturaLocal getNomeclaturaLocal() {
        return nomeclaturaLocal;
    }

    public void setNomeclaturaLocal(NomeclaturaLocal nomeclaturaLocal) {
        this.nomeclaturaLocal = nomeclaturaLocal;
    }
}
